var $ ={};
$.RSA = function() {
    function G(z, t) {
        return new AS(z, t)
    }
    function AI(Aa, Ab) {
        var t = "";
        var z = 0;
        while (z + Ab < Aa.length) {
            t += Aa.substring(z, z + Ab) + "\n";
            z += Ab
        }
        return t + Aa.substring(z, Aa.length)
    }
    function R(t) {
        if (t < 16) {
            return "0" + t.toString(16)
        } else {
            return t.toString(16)
        }
    }
    function AG(Ab, Ae) {
        if (Ae < Ab.length + 11) {
            uv_alert("Message too long for RSA");
            return null
        }
        var Ad = new Array();
        var Aa = Ab.length - 1;
        while (Aa >= 0 && Ae > 0) {
            var Ac = Ab.charCodeAt(Aa--);
            if (Ac < 128) {
                Ad[--Ae] = Ac
            } else {
                if ((Ac > 127) && (Ac < 2048)) {
                    Ad[--Ae] = (Ac & 63) | 128;
                    Ad[--Ae] = (Ac >> 6) | 192
                } else {
                    Ad[--Ae] = (Ac & 63) | 128;
                    Ad[--Ae] = ((Ac >> 6) & 63) | 128;
                    Ad[--Ae] = (Ac >> 12) | 224
                }
            }
        }
        Ad[--Ae] = 0;
        var z = new AE();
        var t = new Array();
        while (Ae > 2) {
            t[0] = 0;
            while (t[0] == 0) {
                z.nextBytes(t)
            }
            Ad[--Ae] = t[0]
        }
        Ad[--Ae] = 2;
        Ad[--Ae] = 0;
        return new AS(Ad)
    }
    function k() {
        this.n = null;
        this.e = 0;
        this.d = null;
        this.p = null;
        this.q = null;
        this.dmp1 = null;
        this.dmq1 = null;
        this.coeff = null
    }
    function O(z, t) {
        if (z != null && t != null && z.length > 0 && t.length > 0) {
            this.n = G(z, 16);
            this.e = parseInt(t, 16)
        } else {
            uv_alert("Invalid RSA public key")
        }
    }
    function w(t) {
        return t.modPowInt(this.e, this.n)
    }
    function P(Aa) {
        var t = AG(Aa, (this.n.bitLength() + 7) >> 3);
        if (t == null) {
            return null
        }
        var Ab = this.doPublic(t);
        if (Ab == null) {
            return null
        }
        var z = Ab.toString(16);
        if ((z.length & 1) == 0) {
            return z
        } else {
            return "0" + z
        }
    }
    k.prototype.doPublic = w;
    k.prototype.setPublic = O;
    k.prototype.encrypt = P;
    var AW;
    var AJ = 244837814094590;
    var AA = ((AJ & 16777215) == 15715070);
    function AS(z, t, Aa) {
        if (z != null) {
            if ("number" == typeof z) {
                this.fromNumber(z, t, Aa)
            } else {
                if (t == null && "string" != typeof z) {
                    this.fromString(z, 256)
                } else {
                    this.fromString(z, t)
                }
            }
        }
    }
    function H() {
        return new AS(null)
    }
    function B(Ac, t, z, Ab, Ae, Ad) {
        while (--Ad >= 0) {
            var Aa = t * this[Ac++] + z[Ab] + Ae;
            Ae = Math.floor(Aa / 67108864);
            z[Ab++] = Aa & 67108863
        }
        return Ae
    }
    function AY(Ac, Ah, Ai, Ab, Af, t) {
        var Ae = Ah & 32767,
        Ag = Ah >> 15;
        while (--t >= 0) {
            var Aa = this[Ac] & 32767;
            var Ad = this[Ac++] >> 15;
            var z = Ag * Aa + Ad * Ae;
            Aa = Ae * Aa + ((z & 32767) << 15) + Ai[Ab] + (Af & 1073741823);
            Af = (Aa >>> 30) + (z >>> 15) + Ag * Ad + (Af >>> 30);
            Ai[Ab++] = Aa & 1073741823
        }
        return Af
    }
    function AX(Ac, Ah, Ai, Ab, Af, t) {
        var Ae = Ah & 16383,
        Ag = Ah >> 14;
        while (--t >= 0) {
            var Aa = this[Ac] & 16383;
            var Ad = this[Ac++] >> 14;
            var z = Ag * Aa + Ad * Ae;
            Aa = Ae * Aa + ((z & 16383) << 14) + Ai[Ab] + Af;
            Af = (Aa >> 28) + (z >> 14) + Ag * Ad;
            Ai[Ab++] = Aa & 268435455
        }
        return Af
    }
    if (AA) {
    	AS.prototype.am = AY;
      AW = 30
    }
//    if (AA && (navigator.appName == "Microsoft Internet Explorer")) {
//        AS.prototype.am = AY;
//        AW = 30
//    } else {
//        if (AA && (navigator.appName != "Netscape")) {
//            AS.prototype.am = B;
//            AW = 26
//        } else {
//            AS.prototype.am = AX;
//            AW = 28
//        }
//    }
    AS.prototype.DB = AW;
    AS.prototype.DM = ((1 << AW) - 1);
    AS.prototype.DV = (1 << AW);
    var AB = 52;
    AS.prototype.FV = Math.pow(2, AB);
    AS.prototype.F1 = AB - AW;
    AS.prototype.F2 = 2 * AW - AB;
    var AF = "0123456789abcdefghijklmnopqrstuvwxyz";
    var AH = new Array();
    var AQ, U;
    AQ = "0".charCodeAt(0);
    for (U = 0; U <= 9; ++U) {
        AH[AQ++] = U
    }
    AQ = "a".charCodeAt(0);
    for (U = 10; U < 36; ++U) {
        AH[AQ++] = U
    }
    AQ = "A".charCodeAt(0);
    for (U = 10; U < 36; ++U) {
        AH[AQ++] = U
    }
    function AZ(t) {
        return AF.charAt(t)
    }
    function Y(z, t) {
        var Aa = AH[z.charCodeAt(t)];
        return (Aa == null) ? -1 : Aa
    }
    function y(z) {
        for (var t = this.t - 1; t >= 0; --t) {
            z[t] = this[t]
        }
        z.t = this.t;
        z.s = this.s
    }
    function N(t) {
        this.t = 1;
        this.s = (t < 0) ? -1 : 0;
        if (t > 0) {
            this[0] = t
        } else {
            if (t < -1) {
                this[0] = t + DV
            } else {
                this.t = 0
            }
        }
    }
    function C(t) {
        var z = H();
        z.fromInt(t);
        return z
    }
    function V(Ae, z) {
        var Ab;
        if (z == 16) {
            Ab = 4
        } else {
            if (z == 8) {
                Ab = 3
            } else {
                if (z == 256) {
                    Ab = 8
                } else {
                    if (z == 2) {
                        Ab = 1
                    } else {
                        if (z == 32) {
                            Ab = 5
                        } else {
                            if (z == 4) {
                                Ab = 2
                            } else {
                                this.fromRadix(Ae, z);
                                return
                            }
                        }
                    }
                }
            }
        }
        this.t = 0;
        this.s = 0;
        var Ad = Ae.length,
        Aa = false,
        Ac = 0;
        while (--Ad >= 0) {
            var t = (Ab == 8) ? Ae[Ad] & 255 : Y(Ae, Ad);
            if (t < 0) {
                if (Ae.charAt(Ad) == "-") {
                    Aa = true
                }
                continue
            }
            Aa = false;
            if (Ac == 0) {
                this[this.t++] = t
            } else {
                if (Ac + Ab > this.DB) {
                    this[this.t - 1] |= (t & ((1 << (this.DB - Ac)) - 1)) << Ac;
                    this[this.t++] = (t >> (this.DB - Ac))
                } else {
                    this[this.t - 1] |= t << Ac
                }
            }
            Ac += Ab;
            if (Ac >= this.DB) {
                Ac -= this.DB
            }
        }
        if (Ab == 8 && (Ae[0] & 128) != 0) {
            this.s = -1;
            if (Ac > 0) {
                this[this.t - 1] |= ((1 << (this.DB - Ac)) - 1) << Ac
            }
        }
        this.clamp();
        if (Aa) {
            AS.ZERO.subTo(this, this)
        }
    }
    function n() {
        var t = this.s & this.DM;
        while (this.t > 0 && this[this.t - 1] == t) {--this.t
        }
    }
    function Q(z) {
        if (this.s < 0) {
            return "-" + this.negate().toString(z)
        }
        var Aa;
        if (z == 16) {
            Aa = 4
        } else {
            if (z == 8) {
                Aa = 3
            } else {
                if (z == 2) {
                    Aa = 1
                } else {
                    if (z == 32) {
                        Aa = 5
                    } else {
                        if (z == 4) {
                            Aa = 2
                        } else {
                            return this.toRadix(z)
                        }
                    }
                }
            }
        }
        var Ac = (1 << Aa) - 1,
        Af,
        t = false,
        Ad = "",
        Ab = this.t;
        var Ae = this.DB - (Ab * this.DB) % Aa;
        if (Ab-->0) {
            if (Ae < this.DB && (Af = this[Ab] >> Ae) > 0) {
                t = true;
                Ad = AZ(Af)
            }
            while (Ab >= 0) {
                if (Ae < Aa) {
                    Af = (this[Ab] & ((1 << Ae) - 1)) << (Aa - Ae);
                    Af |= this[--Ab] >> (Ae += this.DB - Aa)
                } else {
                    Af = (this[Ab] >> (Ae -= Aa)) & Ac;
                    if (Ae <= 0) {
                        Ae += this.DB; --Ab
                    }
                }
                if (Af > 0) {
                    t = true
                }
                if (t) {
                    Ad += AZ(Af)
                }
            }
        }
        return t ? Ad: "0"
    }
    function q() {
        var t = H();
        AS.ZERO.subTo(this, t);
        return t
    }
    function AM() {
        return (this.s < 0) ? this.negate() : this
    }
    function e(t) {
        var Aa = this.s - t.s;
        if (Aa != 0) {
            return Aa
        }
        var z = this.t;
        Aa = z - t.t;
        if (Aa != 0) {
            return Aa
        }
        while (--z >= 0) {
            if ((Aa = this[z] - t[z]) != 0) {
                return Aa
            }
        }
        return 0
    }
    function J(z) {
        var Ab = 1,
        Aa;
        if ((Aa = z >>> 16) != 0) {
            z = Aa;
            Ab += 16
        }
        if ((Aa = z >> 8) != 0) {
            z = Aa;
            Ab += 8
        }
        if ((Aa = z >> 4) != 0) {
            z = Aa;
            Ab += 4
        }
        if ((Aa = z >> 2) != 0) {
            z = Aa;
            Ab += 2
        }
        if ((Aa = z >> 1) != 0) {
            z = Aa;
            Ab += 1
        }
        return Ab
    }
    function T() {
        if (this.t <= 0) {
            return 0
        }
        return this.DB * (this.t - 1) + J(this[this.t - 1] ^ (this.s & this.DM))
    }
    function AR(Aa, z) {
        var t;
        for (t = this.t - 1; t >= 0; --t) {
            z[t + Aa] = this[t]
        }
        for (t = Aa - 1; t >= 0; --t) {
            z[t] = 0
        }
        z.t = this.t + Aa;
        z.s = this.s
    }
    function x(Aa, z) {
        for (var t = Aa; t < this.t; ++t) {
            z[t - Aa] = this[t]
        }
        z.t = Math.max(this.t - Aa, 0);
        z.s = this.s
    }
    function S(Af, Ab) {
        var z = Af % this.DB;
        var t = this.DB - z;
        var Ad = (1 << t) - 1;
        var Ac = Math.floor(Af / this.DB),
        Ae = (this.s << z) & this.DM,
        Aa;
        for (Aa = this.t - 1; Aa >= 0; --Aa) {
            Ab[Aa + Ac + 1] = (this[Aa] >> t) | Ae;
            Ae = (this[Aa] & Ad) << z
        }
        for (Aa = Ac - 1; Aa >= 0; --Aa) {
            Ab[Aa] = 0
        }
        Ab[Ac] = Ae;
        Ab.t = this.t + Ac + 1;
        Ab.s = this.s;
        Ab.clamp()
    }
    function L(Ae, Ab) {
        Ab.s = this.s;
        var Ac = Math.floor(Ae / this.DB);
        if (Ac >= this.t) {
            Ab.t = 0;
            return
        }
        var z = Ae % this.DB;
        var t = this.DB - z;
        var Ad = (1 << z) - 1;
        Ab[0] = this[Ac] >> z;
        for (var Aa = Ac + 1; Aa < this.t; ++Aa) {
            Ab[Aa - Ac - 1] |= (this[Aa] & Ad) << t;
            Ab[Aa - Ac] = this[Aa] >> z
        }
        if (z > 0) {
            Ab[this.t - Ac - 1] |= (this.s & Ad) << t
        }
        Ab.t = this.t - Ac;
        Ab.clamp()
    }
    function AC(z, Ab) {
        var Aa = 0,
        Ac = 0,
        t = Math.min(z.t, this.t);
        while (Aa < t) {
            Ac += this[Aa] - z[Aa];
            Ab[Aa++] = Ac & this.DM;
            Ac >>= this.DB
        }
        if (z.t < this.t) {
            Ac -= z.s;
            while (Aa < this.t) {
                Ac += this[Aa];
                Ab[Aa++] = Ac & this.DM;
                Ac >>= this.DB
            }
            Ac += this.s
        } else {
            Ac += this.s;
            while (Aa < z.t) {
                Ac -= z[Aa];
                Ab[Aa++] = Ac & this.DM;
                Ac >>= this.DB
            }
            Ac -= z.s
        }
        Ab.s = (Ac < 0) ? -1 : 0;
        if (Ac < -1) {
            Ab[Aa++] = this.DV + Ac
        } else {
            if (Ac > 0) {
                Ab[Aa++] = Ac
            }
        }
        Ab.t = Aa;
        Ab.clamp()
    }
    function b(z, Ab) {
        var t = this.abs(),
        Ac = z.abs();
        var Aa = t.t;
        Ab.t = Aa + Ac.t;
        while (--Aa >= 0) {
            Ab[Aa] = 0
        }
        for (Aa = 0; Aa < Ac.t; ++Aa) {
            Ab[Aa + t.t] = t.am(0, Ac[Aa], Ab, Aa, 0, t.t)
        }
        Ab.s = 0;
        Ab.clamp();
        if (this.s != z.s) {
            AS.ZERO.subTo(Ab, Ab)
        }
    }
    function p(Aa) {
        var t = this.abs();
        var z = Aa.t = 2 * t.t;
        while (--z >= 0) {
            Aa[z] = 0
        }
        for (z = 0; z < t.t - 1; ++z) {
            var Ab = t.am(z, t[z], Aa, 2 * z, 0, 1);
            if ((Aa[z + t.t] += t.am(z + 1, 2 * t[z], Aa, 2 * z + 1, Ab, t.t - z - 1)) >= t.DV) {
                Aa[z + t.t] -= t.DV;
                Aa[z + t.t + 1] = 1
            }
        }
        if (Aa.t > 0) {
            Aa[Aa.t - 1] += t.am(z, t[z], Aa, 2 * z, 0, 1)
        }
        Aa.s = 0;
        Aa.clamp()
    }
    function c(Ai, Af, Ae) {
        var Ao = Ai.abs();
        if (Ao.t <= 0) {
            return
        }
        var Ag = this.abs();
        if (Ag.t < Ao.t) {
            if (Af != null) {
                Af.fromInt(0)
            }
            if (Ae != null) {
                this.copyTo(Ae)
            }
            return
        }
        if (Ae == null) {
            Ae = H()
        }
        var Ac = H(),
        z = this.s,
        Ah = Ai.s;
        var An = this.DB - J(Ao[Ao.t - 1]);
        if (An > 0) {
            Ao.lShiftTo(An, Ac);
            Ag.lShiftTo(An, Ae)
        } else {
            Ao.copyTo(Ac);
            Ag.copyTo(Ae)
        }
        var Ak = Ac.t;
        var Aa = Ac[Ak - 1];
        if (Aa == 0) {
            return
        }
        var Aj = Aa * (1 << this.F1) + ((Ak > 1) ? Ac[Ak - 2] >> this.F2: 0);
        var Ar = this.FV / Aj,
        Aq = (1 << this.F1) / Aj,
        Ap = 1 << this.F2;
        var Am = Ae.t,
        Al = Am - Ak,
        Ad = (Af == null) ? H() : Af;
        Ac.dlShiftTo(Al, Ad);
        if (Ae.compareTo(Ad) >= 0) {
            Ae[Ae.t++] = 1;
            Ae.subTo(Ad, Ae)
        }
        AS.ONE.dlShiftTo(Ak, Ad);
        Ad.subTo(Ac, Ac);
        while (Ac.t < Ak) {
            Ac[Ac.t++] = 0
        }
        while (--Al >= 0) {
            var Ab = (Ae[--Am] == Aa) ? this.DM: Math.floor(Ae[Am] * Ar + (Ae[Am - 1] + Ap) * Aq);
            if ((Ae[Am] += Ac.am(0, Ab, Ae, Al, 0, Ak)) < Ab) {
                Ac.dlShiftTo(Al, Ad);
                Ae.subTo(Ad, Ae);
                while (Ae[Am] < --Ab) {
                    Ae.subTo(Ad, Ae)
                }
            }
        }
        if (Af != null) {
            Ae.drShiftTo(Ak, Af);
            if (z != Ah) {
                AS.ZERO.subTo(Af, Af)
            }
        }
        Ae.t = Ak;
        Ae.clamp();
        if (An > 0) {
            Ae.rShiftTo(An, Ae)
        }
        if (z < 0) {
            AS.ZERO.subTo(Ae, Ae)
        }
    }
    function m(t) {
        var z = H();
        this.abs().divRemTo(t, null, z);
        if (this.s < 0 && z.compareTo(AS.ZERO) > 0) {
            t.subTo(z, z)
        }
        return z
    }
    function j(t) {
        this.m = t
    }
    function v(t) {
        if (t.s < 0 || t.compareTo(this.m) >= 0) {
            return t.mod(this.m)
        } else {
            return t
        }
    }
    function AL(t) {
        return t
    }
    function h(t) {
        t.divRemTo(this.m, null, t)
    }
    function f(t, Aa, z) {
        t.multiplyTo(Aa, z);
        this.reduce(z)
    }
    function AU(t, z) {
        t.squareTo(z);
        this.reduce(z)
    }
    j.prototype.convert = v;
    j.prototype.revert = AL;
    j.prototype.reduce = h;
    j.prototype.mulTo = f;
    j.prototype.sqrTo = AU;
    function Z() {
        if (this.t < 1) {
            return 0
        }
        var t = this[0];
        if ((t & 1) == 0) {
            return 0
        }
        var z = t & 3;
        z = (z * (2 - (t & 15) * z)) & 15;
        z = (z * (2 - (t & 255) * z)) & 255;
        z = (z * (2 - (((t & 65535) * z) & 65535))) & 65535;
        z = (z * (2 - t * z % this.DV)) % this.DV;
        return (z > 0) ? this.DV - z: -z
    }
    function F(t) {
        this.m = t;
        this.mp = t.invDigit();
        this.mpl = this.mp & 32767;
        this.mph = this.mp >> 15;
        this.um = (1 << (t.DB - 15)) - 1;
        this.mt2 = 2 * t.t
    }
    function AK(t) {
        var z = H();
        t.abs().dlShiftTo(this.m.t, z);
        z.divRemTo(this.m, null, z);
        if (t.s < 0 && z.compareTo(AS.ZERO) > 0) {
            this.m.subTo(z, z)
        }
        return z
    }
    function AT(t) {
        var z = H();
        t.copyTo(z);
        this.reduce(z);
        return z
    }
    function o(t) {
        while (t.t <= this.mt2) {
            t[t.t++] = 0
        }
        for (var Aa = 0; Aa < this.m.t; ++Aa) {
            var z = t[Aa] & 32767;
            var Ab = (z * this.mpl + (((z * this.mph + (t[Aa] >> 15) * this.mpl) & this.um) << 15)) & t.DM;
            z = Aa + this.m.t;
            t[z] += this.m.am(0, Ab, t, Aa, 0, this.m.t);
            while (t[z] >= t.DV) {
                t[z] -= t.DV;
                t[++z]++
            }
        }
        t.clamp();
        t.drShiftTo(this.m.t, t);
        if (t.compareTo(this.m) >= 0) {
            t.subTo(this.m, t)
        }
    }
    function AN(t, z) {
        t.squareTo(z);
        this.reduce(z)
    }
    function X(t, Aa, z) {
        t.multiplyTo(Aa, z);
        this.reduce(z)
    }
    F.prototype.convert = AK;
    F.prototype.revert = AT;
    F.prototype.reduce = o;
    F.prototype.mulTo = X;
    F.prototype.sqrTo = AN;
    function I() {
        return ((this.t > 0) ? (this[0] & 1) : this.s) == 0
    }
    function W(Af, Ag) {
        if (Af > 4294967295 || Af < 1) {
            return AS.ONE
        }
        var Ae = H(),
        Aa = H(),
        Ad = Ag.convert(this),
        Ac = J(Af) - 1;
        Ad.copyTo(Ae);
        while (--Ac >= 0) {
            Ag.sqrTo(Ae, Aa);
            if ((Af & (1 << Ac)) > 0) {
                Ag.mulTo(Aa, Ad, Ae)
            } else {
                var Ab = Ae;
                Ae = Aa;
                Aa = Ab
            }
        }
        return Ag.revert(Ae)
    }
    function AO(Aa, t) {
        var Ab;
        if (Aa < 256 || t.isEven()) {
            Ab = new j(t)
        } else {
            Ab = new F(t)
        }
        return this.exp(Aa, Ab)
    }
    AS.prototype.copyTo = y;
    AS.prototype.fromInt = N;
    AS.prototype.fromString = V;
    AS.prototype.clamp = n;
    AS.prototype.dlShiftTo = AR;
    AS.prototype.drShiftTo = x;
    AS.prototype.lShiftTo = S;
    AS.prototype.rShiftTo = L;
    AS.prototype.subTo = AC;
    AS.prototype.multiplyTo = b;
    AS.prototype.squareTo = p;
    AS.prototype.divRemTo = c;
    AS.prototype.invDigit = Z;
    AS.prototype.isEven = I;
    AS.prototype.exp = W;
    AS.prototype.toString = Q;
    AS.prototype.negate = q;
    AS.prototype.abs = AM;
    AS.prototype.compareTo = e;
    AS.prototype.bitLength = T;
    AS.prototype.mod = m;
    AS.prototype.modPowInt = AO;
    AS.ZERO = C(0);
    AS.ONE = C(1);
    var M;
    var u;
    var AD;
    function D(t) {
        u[AD++] ^= t & 255;
        u[AD++] ^= (t >> 8) & 255;
        u[AD++] ^= (t >> 16) & 255;
        u[AD++] ^= (t >> 24) & 255;
        if (AD >= l) {
            AD -= l
        }
    }
    function s() {
        D(new Date().getTime())
    }
    if (u == null) {
        u = new Array();
        AD = 0;
        var g;
        while (AD < l) {
            g = Math.floor(65536 * Math.random());
            u[AD++] = g >>> 8;
            u[AD++] = g & 255
        }
        AD = 0;
        s()
    }
    function a() {
        if (M == null) {
            s();
            M = AP();
            M.init(u);
            for (AD = 0; AD < u.length; ++AD) {
                u[AD] = 0
            }
            AD = 0
        }
        return M.next()
    }
    function AV(z) {
        var t;
        for (t = 0; t < z.length; ++t) {
            z[t] = a()
        }
    }
    function AE() {}
    AE.prototype.nextBytes = AV;
    function K() {
        this.i = 0;
        this.j = 0;
        this.S = new Array()
    }
    function E(Ac) {
        var Ab, z, Aa;
        for (Ab = 0; Ab < 256; ++Ab) {
            this.S[Ab] = Ab
        }
        z = 0;
        for (Ab = 0; Ab < 256; ++Ab) {
            z = (z + this.S[Ab] + Ac[Ab % Ac.length]) & 255;
            Aa = this.S[Ab];
            this.S[Ab] = this.S[z];
            this.S[z] = Aa
        }
        this.i = 0;
        this.j = 0
    }
    function A() {
        var z;
        this.i = (this.i + 1) & 255;
        this.j = (this.j + this.S[this.i]) & 255;
        z = this.S[this.i];
        this.S[this.i] = this.S[this.j];
        this.S[this.j] = z;
        return this.S[(z + this.S[this.i]) & 255]
    }
    K.prototype.init = E;
    K.prototype.next = A;
    function AP() {
        return new K()
    }
    var l = 256;
    function r(Ab, Aa, z) {
        Aa = "DF29C573C20C0B3D46F7C214B6ADB6DF55326ABFD6B4C182462446A2F6C103B80568B50019F0998D4680B0ADCA51FF916DBA64ED1004FCAE5B05A1D2EA8E986A6E0E4A153D4E0F231D9672407DC859AF8C403B938077AA736E115C2D5D7282FBC2D15CA6CE2EBE2B20EA44B45BCDA05B37D0A41EE590C0F17936E02235B8DB31";
        z = "3";
        var t = new k();
        t.setPublic(Aa, z);
        return t.encrypt(Ab)
    }
    return {
        rsa_encrypt: r
    }
} ();
$.Encryption = function() {
    var hexcase = 1;
    var b64pad = "";
    var chrsz = 8;
    var mode = 32;
    function md5(s) {
        return hex_md5(s)
    }
    function hex_md5(s) {
        return binl2hex(core_md5(str2binl(s), s.length * chrsz))
    }
    function str_md5(s) {
        return binl2str(core_md5(str2binl(s), s.length * chrsz))
    }
    function hex_hmac_md5(key, data) {
        return binl2hex(core_hmac_md5(key, data))
    }
    function b64_hmac_md5(key, data) {
        return binl2b64(core_hmac_md5(key, data))
    }
    function str_hmac_md5(key, data) {
        return binl2str(core_hmac_md5(key, data))
    }
    function core_md5(x, len) {
        x[len >> 5] |= 128 << ((len) % 32);
        x[(((len + 64) >>> 9) << 4) + 14] = len;
        var a = 1732584193;
        var b = -271733879;
        var c = -1732584194;
        var d = 271733878;
        for (var i = 0; i < x.length; i += 16) {
            var olda = a;
            var oldb = b;
            var oldc = c;
            var oldd = d;
            a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
            d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
            c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
            b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
            a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
            d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
            c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
            b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
            a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
            d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
            c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
            b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
            a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
            d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
            c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
            b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
            a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
            d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
            c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
            b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
            a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
            d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
            c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
            b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
            a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
            d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
            c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
            b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
            a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
            d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
            c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
            b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
            a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
            d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
            c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
            b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
            a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
            d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
            c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
            b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
            a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
            d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
            c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
            b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
            a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
            d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
            c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
            b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
            a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
            d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
            c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
            b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
            a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
            d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
            c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
            b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
            a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
            d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
            c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
            b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
            a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
            d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
            c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
            b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
            a = safe_add(a, olda);
            b = safe_add(b, oldb);
            c = safe_add(c, oldc);
            d = safe_add(d, oldd)
        }
        if (mode == 16) {
            return Array(b, c)
        } else {
            return Array(a, b, c, d)
        }
    }
    function md5_cmn(q, a, b, x, s, t) {
        return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
    }
    function md5_ff(a, b, c, d, x, s, t) {
        return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
    }
    function md5_gg(a, b, c, d, x, s, t) {
        return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
    }
    function md5_hh(a, b, c, d, x, s, t) {
        return md5_cmn(b ^ c ^ d, a, b, x, s, t)
    }
    function md5_ii(a, b, c, d, x, s, t) {
        return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
    }
    function core_hmac_md5(key, data) {
        var bkey = str2binl(key);
        if (bkey.length > 16) {
            bkey = core_md5(bkey, key.length * chrsz)
        }
        var ipad = Array(16),
        opad = Array(16);
        for (var i = 0; i < 16; i++) {
            ipad[i] = bkey[i] ^ 909522486;
            opad[i] = bkey[i] ^ 1549556828
        }
        var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
        return core_md5(opad.concat(hash), 512 + 128)
    }
    function safe_add(x, y) {
        var lsw = (x & 65535) + (y & 65535);
        var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
        return (msw << 16) | (lsw & 65535)
    }
    function bit_rol(num, cnt) {
        return (num << cnt) | (num >>> (32 - cnt))
    }
    function str2binl(str) {
        var bin = Array();
        var mask = (1 << chrsz) - 1;
        for (var i = 0; i < str.length * chrsz; i += chrsz) {
            bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32)
        }
        return bin
    }
    function binl2str(bin) {
        var str = "";
        var mask = (1 << chrsz) - 1;
        for (var i = 0; i < bin.length * 32; i += chrsz) {
            str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask)
        }
        return str
    }
    function binl2hex(binarray) {
        var hex_tab = hexcase ? "0123456789ABCDEF": "0123456789abcdef";
        var str = "";
        for (var i = 0; i < binarray.length * 4; i++) {
            str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 15)
        }
        return str
    }
    function binl2b64(binarray) {
        var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        var str = "";
        for (var i = 0; i < binarray.length * 4; i += 3) {
            var triplet = (((binarray[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255);
            for (var j = 0; j < 4; j++) {
                if (i * 8 + j * 6 > binarray.length * 32) {
                    str += b64pad
                } else {
                    str += tab.charAt((triplet >> 6 * (3 - j)) & 63)
                }
            }
        }
        return str
    }
    function hexchar2bin(str) {
        var arr = [];
        for (var i = 0; i < str.length; i = i + 2) {
            arr.push("\\x" + str.substr(i, 2))
        }
        arr = arr.join("");
        eval("var temp = '" + arr + "'");
        return temp
    }
    function getEncryption(password, uin, vcode) {
        var str1 = hexchar2bin(md5(password));
        var str2 = md5(str1 + uin);
        var str3 = md5(str2 + vcode.toUpperCase());
        return str3
    }
    function getRSAEncryption(password, vcode) {
        var str1 = md5(password);
        var str2 = str1 + vcode.toUpperCase();
        var str3 = $.RSA.rsa_encrypt(str2);
        return str3
    }
    return {
        getEncryption: getEncryption,
        getRSAEncryption: getRSAEncryption
    }
} ();